package cn.iocoder.yudao.module.erp.controller.admin.contract.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 合同信息新增/修改 Request VO")
@Data
public class ContractSaveReqVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "23195")
    private Long id;

    @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @NotEmpty(message = "合同名称不能为空")
    private String contractName;

    @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
    private String contractNo;

    @Schema(description = "合同状态", example = "2")
    private String contractStatus;

    @Schema(description = "签订时间")
    private LocalDateTime signingDate;

    @Schema(description = "甲方名称")
    private String partyA;

    @Schema(description = "乙方名称")
    private String partyB;

    @Schema(description = "合同税率")
    private BigDecimal contractTaxRate;

    @Schema(description = "合同总金额（含税）")
    private BigDecimal contractAmountInclTax;

    @Schema(description = "合同总金额（不含税）")
    private BigDecimal contractAmountExclTax;

    @Schema(description = "合同责任部门ID", example = "5559")
    private Long contractDepartmentId;

    @Schema(description = "合同责任部门")
    private String contractDepartment;

    @Schema(description = "合同责任人ID", example = "7972")
    private Long contractResponsiblePersonId;

    @Schema(description = "合同责任人")
    private String contractResponsiblePerson;

    @Schema(description = "责任人联系电话")
    private String responsiblePersonPhone;

    @Schema(description = "甲方签署人员ID", example = "10852")
    private Long partyAManagerId;

    @Schema(description = "甲方签署人员")
    private String partyAManager;

    @Schema(description = "乙方公司名称")
    private String partyBDepartment;

    @Schema(description = "乙方责任人")
    private String partyBResponsiblePerson;

    @Schema(description = "乙方联系人电话")
    private String partyBManagerPhone;

    @Schema(description = "乙方签署人员")
    private String partyBManager;

    @Schema(description = "乙方联系人微信")
    private String partyBManagerWx;

    @Schema(description = "乙方联系人邮箱")
    private String partyBManagerEmail;

    @Schema(description = "紧急程度")
    private String urgencyLevel;

    @Schema(description = "保密程度")
    private String confidentialityLevel;

    @Schema(description = "生效日期")
    private LocalDateTime effectiveDate;

    @Schema(description = "终止日期")
    private LocalDateTime expirationDate;

    @Schema(description = "摘要内容")
    private String contractSummary;
}